//package com.ag.answergames.service.wallet.impl;
//
//import com.ag.answergames.entity.PersonalAccountJournalEntity;
//import com.ag.answergames.mapper.wallet.PersonalAccountJournalMapper;
//import com.ag.answergames.service.wallet.PersonalDetailService;
//import com.ag.answergames.util.QRCodeUtil;
//import com.ag.answergames.util.SnowflakeIdWorkerController;
//import com.ag.answergames.vo.common.Result;
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.google.zxing.WriterException;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.awt.image.BufferedImage;
//import java.util.Date;
//
///**
// * @author: aoaowu
// * @program: answer-game
// * @description: 个人资金通道的明细impl
// * @create: 2023/04/19 18:26
// **/
//@Service
//public class PersonalDetailServiceImpl implements PersonalDetailService {
//
//    //交易类型（充值:01，退款:02，提现:03，转账:04）
//    //账户类型    ACC001：家长余额账户，ACC002:小孩零钱罐
//    //来往标志  1：来账   2：往账
//    private final String thirdURL = "https://biz.earku.com/ShareShop/z_pay_wap.html";
//    @Autowired
//    private PersonalAccountJournalMapper personalAccountJournalMapper;
//    @Autowired
//    private SnowflakeIdWorkerController snowflakeIdWorkerController;
//
//    /**
//     * @Author: aoaowu
//     * @Description: refund退款申请
//     * @Param: [money, tradeType, id]
//     * @return: com.ag.answergames.vo.common.Result
//     * @Date: 2023/4/20
//     */
//    @Override
//    public Result refund(Long money, Integer tradeType, Long openId) {
//        //判断tradeType
//        PersonalAccountJournalEntity personalAccountJournalEntity = personalAccountJournalMapper.selectById(openId);
//        while (tradeType == 2) {
//            if (personalAccountJournalEntity.getMoney() >= money) {
//                //流水号
//                personalAccountJournalEntity.setJournalId(snowflakeIdWorkerController.nextId());
//                //todo 支付接口的订单号 消息推送
//                personalAccountJournalEntity.setAccountType("ACC001");
//                personalAccountJournalEntity.setInOutFlag(2);
//                personalAccountJournalEntity.setCreateTime(System.currentTimeMillis());
//            } else {
//                return Result.failed("退款余额超出范围");
//            }
//        }
//        return Result.success(personalAccountJournalEntity);
//    }
//
//    /**
//     * @Author: aoaowu
//     * @Description: transfer转账 大人账户到小孩账户
//     * @Param: [money, tradeType, id]
//     * @return: com.ag.answergames.vo.common.Result
//     * @Date: 2023/4/20
//     */
//    @Override
//    public Result transfer(Long money, Integer tradeType, Long id) {
//        PersonalAccountJournalEntity personalAccountJournalEntity = personalAccountJournalMapper.selectById(id);
//        if (personalAccountJournalEntity.getMoney() >= money) {
//            //流水号
//            personalAccountJournalEntity.setJournalId(snowflakeIdWorkerController.nextId());
//            //todo 支付接口的订单号 消息推送
//            personalAccountJournalEntity.setAccountType("ACC001");
//            personalAccountJournalEntity.setInOutFlag(2);
//            personalAccountJournalEntity.setCreateTime(System.currentTimeMillis());
//        } else {
//            return Result.failed("退款余额超出范围");
//        }
//        return Result.success(personalAccountJournalEntity);
//    }
//
//
//    /**
//     * @Author: aoaowu
//     * @Description: recharge充值
//     * @Param: [money, tradeType, id]
//     * @return: com.ag.answergames.vo.common.Result
//     * @Date: 2023/4/20
//     */
//    @Override
//    public Result recharge(Long money, Integer tradeType, String personalId) {
//        QueryWrapper<PersonalAccountJournalEntity> queryWrapper = new QueryWrapper<>();
//        queryWrapper.eq("personal_id", personalId);
//        PersonalAccountJournalEntity personalAccountJournalEntity = personalAccountJournalMapper.selectOne(queryWrapper);
//        //充值类型：代码为1
//        while (tradeType == 1) {
//            if (money >= 0) {
//                //自定义生成流水号
//                personalAccountJournalEntity.setJournalId(snowflakeIdWorkerController.nextId());
//                //充值金额
//                personalAccountJournalEntity.setMoney(money);
//                //设置为家长账户代号
//                personalAccountJournalEntity.setAccountType("ACC001");
//                //设置来往标志
//                personalAccountJournalEntity.setInOutFlag(1);
//                //设置时间
//                personalAccountJournalEntity.setCreateTime(System.currentTimeMillis());
//            } else {
//                return Result.failed("充值失败");
//            }
//        }
//        return Result.success(personalAccountJournalEntity);
//    }
//
//    /**
//     * @Author: aoaowu
//     * @Description: find查找明细
//     * @Param: [ id]
//     * @return: com.ag.answergames.vo.common.Result
//     * @Date: 2023/4/20
//     */
//    @Override
//    public Result find(Long id) {
//        return null;
//    }
//
//    /**
//     * @Author: aoaowu
//     * @Description: withdraw提款
//     * @Param: [money, tradeType, id]
//     * @return: com.ag.answergames.vo.common.Result
//     * @Date: 2023/4/20
//     */
//    @Override
//    public Result withdraw(Long money, Integer tradeType, Long id) {
//        return null;
//    }
//
//    /**
//     * @Author: aoaowu
//     * @Description: 扫码支付
//     * @Param: [money, openId]
//     * @return: java.awt.image.BufferedImage
//     * @Date: 2023/4/20
//     */
//    @Override
//    public BufferedImage pay(Long money, String openId) {
//        long l = snowflakeIdWorkerController.nextId();
//        String m = "m = " + money;
//        String shopId = "shopId =" + "10292";
//        String thirdOrderNo = "thirdOrderNo=" + l;
//        String thirdReturnUrl = "thirdReturnUrl=" + "abc";
//        String thirdNotifyUrl = "thirdNotifyUrl=" + "/back/pay/wxpay/Notify";
//        //todo 回调函数需要修改
//        String openID = openId;
//        String content = thirdURL + "?" + shopId + "&" +
//                m + "&" + thirdOrderNo + "&" + thirdReturnUrl + "&" + thirdNotifyUrl;
//        BufferedImage bufferedImage;
//        try {
//             bufferedImage = QRCodeUtil.getBufferedImage(content);
//        } catch (WriterException e) {
//            throw new RuntimeException(e);
//        }
//        return bufferedImage;
//    }
//}
